home *** CD-ROM | disk | FTP | other *** search
-
- local npldiku=27;
- local dxklec=5;
- local dyklec=6;
-
- local pldnic=0;
- local pldjdu=1;
- local pldjsem=2;
- local pldodch=3;
- local pldzust=4;
- local pldzed=5;
-
- -- -----------------------------------------------------------------
- function initPldici(leader)
- leader.pldik = {}
- for i = 0, npldiku - 1 do
- leader.pldik[i] = {}
- leader.pldik[i].xs = 0
- leader.pldik[i].ys = 0
- leader.pldik[i].cinnost = 0
- leader.pldik[i].faze = 0
- leader.pldik[i].smer = 0
- leader.pldik[i].delit = 0
- leader.pldik[i].otec = 0
- end
- leader.klec = {}
- for i = 0, dxklec + 1 do
- leader.klec[i] = {}
- end
-
-
- for i = 0, npldiku - 1 do
- getModelsTable()[leader.index + i].afaze = 36
- getModelsTable()[leader.index + i]:updateAnim()
- end
- for x = 0, dxklec + 1 do
- for y = 0, dyklec + 1 do
- if x == 0 or x > dxklec or y == 0 or y > dyklec or x == 3 and y >= 4 then
- leader.klec[x][y] = pldzed
- else
- leader.klec[x][y] = pldnic
- end
- end
- end
- getModelsTable()[leader.index + 12].afaze = 0
- getModelsTable()[leader.index + 12]:updateAnim()
- leader.pocet = 1
- leader.pldik[0].xs = 3
- leader.pldik[0].ys = 1
- leader.pldik[0].cinnost = 0
- leader.pldik[0].faze = 0
- leader.pldik[0].delit = random(200) + 200
- end
-
- -- -----------------------------------------------------------------
- function fazeplda(leader, x, y, anim)
- local p
- p = (x - 1) * dyklec + y
- if p > 15 then
- p = p - 3
- end
- if p > npldiku or p <= 0 then
- print("SCRIPT_WARNING out of array; p="..p.."; x="..x.."; y="..y.."; anim="..anim)
- else
- p = leader.index + p - 1
- getModelsTable()[p].afaze = anim
- getModelsTable()[p]:updateAnim()
- end
- end
- -- -----------------------------------------------------------------
- function progPldici(leader)
- local nx
- local musibyt, kliddole, volnovedle
- local sm
- local pldik = leader.pldik
- local klec = leader.klec
-
- for i = 0, npldiku - 1 do
- getModelsTable()[leader.index + i].afaze = 36
- getModelsTable()[leader.index + i]:updateAnim()
- end
- for i = 0, leader.pocet - 1 do
- selected = pldik[i]
- if selected.delit > 0 then
- selected.delit = selected.delit - 1
- else
- selected.delit = 10 + random(10)
- end
- musibyt = klec[selected.xs][selected.ys] == pldzust
- kliddole = klec[selected.xs][selected.ys + 1] == pldjsem or klec[selected.xs][selected.ys + 1] == pldzed
- sm = random(2)
- switch(sm){
- [1] = function()
- nx = selected.xs - 1
- end,
- [0] = function()
- nx = selected.xs + 1
- end,
- }
- switch(selected.cinnost){
- [0] = function()
- if klec[selected.xs][selected.ys + 1] == 0 then
- selected.cinnost = 1
- selected.faze = 0
- klec[selected.xs][selected.ys] = pldodch
- klec[selected.xs][selected.ys + 1] = pldjdu
- fazeplda(leader, selected.xs, selected.ys, 20)
- fazeplda(leader, selected.xs, selected.ys + 1, 19)
- elseif kliddole and selected.delit == 0 and klec[nx][selected.ys] == 0 then
- selected.delit = random(300) + 100
- selected.cinnost = 2
- selected.faze = 0
- selected.smer = sm
- klec[selected.xs][selected.ys] = pldjsem
- if klec[selected.xs][selected.ys + 1] == pldjsem then
- klec[selected.xs][selected.ys + 1] = pldzust
- end
- pldik[leader.pocet].xs = nx
- pldik[leader.pocet].ys = selected.ys
- pldik[leader.pocet].cinnost = 3
- pldik[leader.pocet].faze = 0
- pldik[leader.pocet].smer = sm
- pldik[leader.pocet].delit = random(300) + 100
- pldik[leader.pocet].otec = i
- klec[nx][selected.ys] = pldjdu
- fazeplda(leader, selected.xs, selected.ys, 4 - sm)
- fazeplda(leader, nx, selected.ys, 36)
- leader.pocet = leader.pocet + 1
- elseif random(100) < 4 and kliddole and not musibyt then
- if klec[nx][selected.ys] == 0 and (klec[nx][selected.ys + 1] == 2 or klec[nx][selected.ys + 1] == 5) then
- selected.cinnost = 4
- selected.faze = 0
- selected.smer = sm
- klec[selected.xs][selected.ys] = pldodch
- klec[nx][selected.ys] = pldjdu
- fazeplda(leader, selected.xs, selected.ys, 4 - sm)
- elseif klec[nx][selected.ys] == 0 and klec[nx][selected.ys + 1] == 0 then
- selected.cinnost = 5
- selected.faze = 0
- selected.smer = sm
- klec[selected.xs][selected.ys] = pldodch
- klec[nx][selected.ys] = pldjdu
- fazeplda(leader, selected.xs, selected.ys, 10 + sm * 18)
- elseif (klec[nx][selected.ys] == pldjsem or klec[nx][selected.ys] == pldzed) and klec[selected.xs][selected.ys - 1] == 0 and klec[nx][selected.ys - 1] == 0 then
- selected.cinnost = 6
- selected.faze = 0
- selected.smer = sm
- if klec[nx][selected.ys] == pldjsem then
- klec[nx][selected.ys] = pldzust
- end
- klec[selected.xs][selected.ys] = pldodch
- klec[selected.xs][selected.ys - 1] = pldjdu
- fazeplda(leader, selected.xs, selected.ys, 18)
- else
- fazeplda(leader, selected.xs, selected.ys, selected.faze)
- end
- else
- if random(100) < 10 then
- selected.faze = random(5)
- end
- if random(100) < 2 then
- fazeplda(leader, selected.xs, selected.ys, 5)
- else
- fazeplda(leader, selected.xs, selected.ys, selected.faze)
- end
- end
- end,
- [1] = function()
- if selected.faze == 0 then
- klec[selected.xs][selected.ys] = 0
- selected.ys = selected.ys + 1
- klec[selected.xs][selected.ys] = pldodch
- fazeplda(leader, selected.xs, selected.ys, 2)
- selected.faze = selected.faze + 1
- else
- switch(klec[selected.xs][selected.ys + 1]){
- [0] = function()
- klec[selected.xs][selected.ys] = pldodch
- klec[selected.xs][selected.ys + 1] = pldjdu
- fazeplda(leader, selected.xs, selected.ys, 20)
- fazeplda(leader, selected.xs, selected.ys + 1, 19)
- selected.faze = selected.faze - 1
- end,
- [1] = function()
- klec[selected.xs][selected.ys] = pldodch
- fazeplda(leader, selected.xs, selected.ys, 2)
- selected.cinnost = 0
- selected.faze = 2
- end,
- [3] = function()
- klec[selected.xs][selected.ys] = pldodch
- fazeplda(leader, selected.xs, selected.ys, 2)
- selected.cinnost = 0
- selected.faze = 2
- end,
- default = function()
- selected.cinnost = 0
- selected.faze = 0
- klec[selected.xs][selected.ys] = pldjsem
- fazeplda(leader, selected.xs, selected.ys, 18)
- end,
- }
- end
- end,
- [3] = function()
- selected.faze = selected.faze + 1
- switch(selected.faze){
- [4] = function()
- fazeplda(leader, selected.xs, selected.ys, 14 + selected.smer * 18)
- klec[selected.xs][selected.ys] = pldjsem
- end,
- [16] = function()
- selected.cinnost = 0
- selected.faze = 0
- fazeplda(leader, selected.xs, selected.ys, 0)
- pldik[selected.otec].cinnost = 0
- fazeplda(leader, pldik[selected.otec].xs, pldik[selected.otec].ys, 4 - selected.smer)
- if klec[pldik[selected.otec].xs][pldik[selected.otec].ys + 1] == 4 then
- klec[pldik[selected.otec].xs][pldik[selected.otec].ys + 1] = 2
- end
- end,
- [21] = function()
- fazeplda(leader, selected.xs, selected.ys, 17 + selected.smer * 18)
- if random(100) < 20 then
- selected.faze = 15
- else
- selected.faze = selected.faze - 1
- end
- end,
- default = function()
- if 1 <= selected.faze and selected.faze <= 3 then
- fazeplda(leader, selected.xs, selected.ys, 12 + selected.smer * 18)
- elseif 5 <= selected.faze and selected.faze <= 6 then
- fazeplda(leader, selected.xs, selected.ys, 14 + selected.smer * 18)
- elseif 7 <= selected.faze and selected.faze <= 9 then
- fazeplda(leader, selected.xs, selected.ys, 15 + selected.smer * 18)
- elseif 10 <= selected.faze and selected.faze <= 15 then
- fazeplda(leader, selected.xs, selected.ys, 16 + selected.smer * 18)
- if random(100) < 10 then
- selected.faze = 20
- end
- end
- end,
- }
- end,
- [2] = function()
- if random(100) < 4 then
- fazeplda(leader, selected.xs, selected.ys, 13 + selected.smer * 18)
- else
- fazeplda(leader, selected.xs, selected.ys, 11 + selected.smer * 18)
- end
- end,
- [4] = function()
- selected.faze = selected.faze + 1
- switch(selected.smer){
- [0] = function()
- nx = selected.xs + 1
- end,
- [1] = function()
- nx = selected.xs - 1
- end,
- }
- switch(selected.faze){
- [1] = function()
- fazeplda(leader, selected.xs, selected.ys, 6 + selected.smer * 18)
- fazeplda(leader, nx, selected.ys, 7 + selected.smer * 18)
- end,
- [2] = function()
- fazeplda(leader, selected.xs, selected.ys, 8 + selected.smer * 18)
- fazeplda(leader, nx, selected.ys, 9 + selected.smer * 18)
- end,
- [3] = function()
- klec[selected.xs][selected.ys] = 0
- selected.xs = nx
- klec[selected.xs][selected.ys] = pldjsem
- fazeplda(leader, selected.xs, selected.ys, 0)
- selected.cinnost = 0
- selected.faze = 0
- end,
- }
- end,
- [5] = function()
- selected.faze = selected.faze + 1
- switch(selected.smer){
- [0] = function()
- nx = selected.xs + 1
- end,
- [1] = function()
- nx = selected.xs - 1
- end,
- }
- switch(selected.faze){
- [1] = function()
- fazeplda(leader, selected.xs, selected.ys, 10 + selected.smer * 18)
- end,
- [2] = function()
- fazeplda(leader, selected.xs, selected.ys, 10 + selected.smer * 18)
- end,
- [3] = function()
- fazeplda(leader, selected.xs, selected.ys, 21 + selected.smer)
- fazeplda(leader, nx, selected.ys, 22 - selected.smer)
- end,
- [4] = function()
- klec[selected.xs][selected.ys] = 0
- selected.xs = nx
- klec[selected.xs][selected.ys] = pldodch
- fazeplda(leader, selected.xs, selected.ys, 2)
- selected.cinnost = 1
- selected.faze = 1
- end,
- }
- end,
- [6] = function()
- selected.faze = selected.faze + 1
- switch(selected.smer){
- [0] = function()
- nx = selected.xs + 1
- end,
- [1] = function()
- nx = selected.xs - 1
- end,
- }
- switch(selected.faze){
- [1] = function()
- fazeplda(leader, selected.xs, selected.ys - 1, 20)
- fazeplda(leader, selected.xs, selected.ys, 19)
- end,
- [2] = function()
- klec[selected.xs][selected.ys] = 0
- selected.ys = selected.ys - 1
- klec[selected.xs][selected.ys] = pldodch
- if klec[nx][selected.ys] == 0 then
- fazeplda(leader, selected.xs, selected.ys, 21 + selected.smer)
- fazeplda(leader, nx, selected.ys, 22 + selected.smer)
- klec[nx][selected.ys] = pldjdu
- else
- selected.cinnost = 1
- selected.faze = 1
- fazeplda(leader, selected.xs, selected.ys, 2)
- if klec[nx][selected.ys + 1] == 4 then
- klec[nx][selected.ys + 1] = 2
- end
- end
- end,
- [3] = function()
- klec[selected.xs][selected.ys] = 0
- selected.xs = nx
- klec[selected.xs][selected.ys] = pldjsem
- fazeplda(leader, selected.xs, selected.ys, 18)
- selected.cinnost = 0
- selected.faze = 0
- if klec[selected.xs][selected.ys + 1] == 4 then
- klec[selected.xs][selected.ys + 1] = 2
- end
- end,
- }
- end,
- }
- end
- end
-
-
-